package com.ruoyi.buss.task.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.buss.grid.cj.domain.DataCustomerInfoVO;
import com.ruoyi.buss.task.domain.*;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.system.api.model.LoginUser;

/**
 * 营销任务Service接口
 * 
 * @author sxy
 * @date 2021-07-16
 */
public interface IDataTaskInfoService {
	/**
	 * 查询营销任务详情
	 */
	public DataTaskInfo item(String taskId, LoginUser userInfo);

	/**
	 * 查询营销任务列表(taskType=0查总行，taskType=1查个人)
	 * 
	 * @param dataTaskInfo
	 * @return
	 */
	public List<DataTaskInfo> taskList(DataTaskInfo dataTaskInfo, LoginUser userInfo);

	/**
	 * 添加营销任务
	 *
	 * @param taskAddInfo TaskInfoAddVO 营销任务信息
	 * @param userId      String 当前登录用户ID
	 * @param orgId       String 机构ID
	 * @param taskIdRef   Ref<String> 任务ID
	 * @return ErrorCode
	 */
	public Map<String,String> insertTask(DataTaskInfo taskAddInfo, LoginUser userInfo);

	/**
	 * 修改营销反馈
	 * 
	 * @param dataTaskInfo
	 * @param userInfo
	 * @return
	 */
	public AjaxResult updateExInfo(DataTaskInfo dataTaskInfo, LoginUser userInfo);

	/**
	 * 检验是否可以开始营销
	 * 
	 * @param dataTaskInfo
	 * @param userInfo
	 * @return
	 */

	public AjaxResult ExRecord(DataTaskInfo dataTaskInfo, LoginUser userInfo);

	/**
	 * 查询营销任务对应的客户列表
	 * 
	 * @param dataTaskInfo
	 * @param userInfo
	 * @return
	 */
	public List<DataCustomerInfoVO> listCustom(DataTaskInfo dataTaskInfo, LoginUser userInfo);

	/**
	 * 查询营销任务对应的客户列表
	 * 
	 * @param dataTaskInfo
	 * @param userInfo
	 * @return
	 */
	public List<DataTaskInfo> taskListCustom(DataTaskInfo dataTaskInfo, LoginUser userInfo);

	/**
	 * 添加营销反馈
	 * 
	 * @param dataTaskExRecord
	 * @param userInfo
	 * @return
	 */
	public AjaxResult insertTaskExRecord(DataTaskExRecord dataTaskExRecord, LoginUser userInfo);

	/**
	 * 开始营销任务
	 * 
	 * @param taskExRecordVO
	 * @param userInfo
	 * @return
	 */
	public AjaxResult startTaskExRecord(DataTaskExRecord taskExRecordVO, LoginUser userInfo);

	/**
	 * 查询客户营销记录集合
	 * 
	 * @param taskId
	 * @param idCard
	 * @param userInfo
	 * @return
	 */
	public List<DataTaskExRecord> listTaskExRecord(String taskId, String idCard, LoginUser userInfo);

	/**
	 * 查询营销任务报表信息
	 * 
	 * @param conditionVO
	 * @param userId
	 * @param userInfo
	 * @return
	 */
	public List<TaskReportsVO> queryReports(DataTaskInfo conditionVO, LoginUser userInfo);

	/**
	 * 根据taskId对表DATA_TASK_INFO、DATA_PLAN_TASK_RELATION、DATA_USER_TASK_RELATION进行删除字段操作
	 * 
	 * @param condition
	 * @param userInfo
	 * @return
	 */
	public AjaxResult delete(DataTaskInfo condition, LoginUser userInfo);

	/**
	 * 刷新总行营销任务
	 * 
	 * @param taskID
	 * @param userInfo
	 * @return
	 */
	public AjaxResult refreshTask(String taskID, LoginUser userInfo);

	/**
	 * 任务退回，针对已办结任务
	 * 
	 * @param taskCustomerVO
	 * @param userInfo
	 * @return
	 */
	public AjaxResult taskReturn(DataTaskInfo taskCustomerVO, LoginUser userInfo);

	/**
	 * 营销客户列表
	 * 
	 * @param dataTaskInfo
	 * @param userInfo
	 * @return
	 */
	public List<DataTaskInfo> marketTaskList(DataTaskInfo dataTaskInfo, LoginUser userInfo);
	public List<ExprotDataTaskInfo> exprotMarketTaskList(ExprotDataTaskInfo dataTaskInfo, LoginUser userInfo);

	/**
	 * 获取任务完成情况
	 * 
	 * @param dataTaskInfo.type 0是任务数 1是到个人
	 * @return
	 */
	public List<DataTaskInfo> getMarketStatus(DataTaskInfo dataTaskInfo, LoginUser userInfo);

	/**
	 * 新增营销反馈的图片
	 * 
	 * @param dataTaskExRecordImage
	 * @param userInfo
	 * @return
	 */
	public AjaxResult updateExImage(DataTaskExRecordImage dataTaskExRecordImage, LoginUser userInfo);

	/**
	 * 删除营销反馈的图片
	 * 
	 * @param dataTaskExRecordImage
	 * @param userInfo
	 * @return
	 */
	public AjaxResult delExImage(DataTaskExRecordImage dataTaskExRecordImage, LoginUser userInfo);

	/**
	 * 删除任务/客户
	 * 
	 * @param taskInfo
	 * @param userInfo
	 * @return
	 */
	public AjaxResult delTaskInfo(DataTaskInfo taskInfo, LoginUser userInfo);

	/**
	 * 查询营销任务
	 * 
	 * @param taskId 营销任务ID
	 * @return 营销任务
	 */
	public DataTaskInfo selectDataTaskInfoById(String taskId);

	/**
	 * 查询营销任务列表
	 * 
	 * @param dataTaskInfo 营销任务
	 * @return 营销任务集合
	 */
	public List<DataTaskInfo> selectDataTaskInfoList(DataTaskInfo dataTaskInfo);

	/**
	 * 新增营销任务
	 * 
	 * @param dataTaskInfo 营销任务
	 * @return 结果
	 */
	public int insertDataTaskInfo(DataTaskInfo dataTaskInfo);

	/**
	 * 修改营销任务
	 * 
	 * @param dataTaskInfo 营销任务
	 * @return 结果
	 */
	public int updateDataTaskInfo(DataTaskInfo dataTaskInfo);

	/**
	 * 批量删除营销任务
	 * 
	 * @param taskIds 需要删除的营销任务ID
	 * @return 结果
	 */
	public int deleteDataTaskInfoByIds(String[] taskIds);

	/**
	 * 删除营销任务信息
	 * 
	 * @param taskId 营销任务ID
	 * @return 结果
	 */
	public int deleteDataTaskInfoById(String taskId);

	/**
	 * 定时任务
	 */
	public void relationTaskCustomer();
	
	public List<UserTaskRelationDO>  queryAllotTaskCustomer(UserTaskRelationDO condition,LoginUser userInfo);
	
	public AjaxResult AllotTaskCustomer(UserTaskRelationDO vo,LoginUser userInfo);

	public List<NewtableAll> getNewtableAllList(NewtableAll newtableAll, LoginUser userInfo);
}
